package com.example.project.service.impl;

import com.example.project.base.BaseServiceImpl;
import com.example.project.entity.TModule;
import com.example.project.mapper.TModuleMapper;
import com.example.project.service.TModuleService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Service
public class TModuleServiceImpl extends BaseServiceImpl<TModule> implements TModuleService {
    @Autowired
    TModuleMapper tModuleMapper;

    @Override
    public List<String> getAllModuleNoByUserId(Integer userId){
        List<Map>moduleInfo=tModuleMapper.getAllModuleNoByUserId(userId);
        List<String> resultList=new LinkedList<>();

        boolean isRoot=false;

        if(moduleInfo.size()==1){
            Map info=moduleInfo.get(0);
            //代表最高级默认获取所有模块
            if(info.get("isRoot").equals(1)){
                isRoot=true;
            }else if(StringUtils.isEmpty(String.valueOf(info.get("moduleNo")))){
                //代表没有功能模块
                return resultList;
            }


        }

        for (Map<String,Object> item:moduleInfo) {
            if(item.get("isRoot").equals(1)){
                isRoot=true;
                break;
            }else{
                if(item.get("moduleStatus").equals(1)){
                    resultList.add(String.valueOf(item.get("moduleNo")));
                }else{
                    //未启用的模块
                }
            }
        }
        if(isRoot){
            return tModuleMapper.getAllModuleInfo();
        }

        return resultList;
    }


    @Override
    public List<String> getAllModuleNoByRoleId(Integer roleId){
        List<Map>moduleInfo=tModuleMapper.getAllModuleNoByRoleId(roleId);
        List<String> resultList=new LinkedList<>();

        boolean isRoot=false;

        if(moduleInfo.size()==1){
            Map info=moduleInfo.get(0);
            //代表最高级默认获取所有模块
            if(info.get("isRoot").equals(1)){
                isRoot=true;
            }else if(StringUtils.isEmpty(String.valueOf(info.get("moduleNo")))){
                //代表没有功能模块
                return resultList;
            }


        }

        for (Map<String,Object> item:moduleInfo) {
            if(item.get("isRoot").equals(1)){
                isRoot=true;
                break;
            }else{
                if(item.get("moduleStatus").equals(1)){
                    resultList.add(String.valueOf(item.get("moduleNo")));
                }else{
                    //未启用的模块
                }
            }
        }
        if(isRoot){
            return tModuleMapper.getAllModuleInfo();
        }

        return resultList;
    }


}
